8 #ifndef KAMELEONINTERPOLATOR_H_
9 #define KAMELEONINTERPOLATOR_H_
10 #include <boost/unordered_map.hpp>
35 float interpolate(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
48 float interpolate(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& dc0,
49 float& dc1,
float& dc2);
59 float interpolate(
const long& variable_id,
const float& c0,
const float& c1,
const float& c2);
60 float interpolate(
const long& variable_id,
const float& c0,
const float& c1,
const float& c2,
float& dc0,
float& dc1,
67 const float& positionComponent1,
const float& positionComponent2,
const float& positionComponent3,
68 float& dComponent1,
float& dComponent2,
float& dComponent3);
69 std::string modelName;
72 boost::unordered_map<std::string, std::vector<std::string> > listOfRequiredVariablesForComponents;
73 boost::unordered_map<std::string, std::vector<std::string> > listOfRequiredVariablesForVectors;
76 boost::unordered_map<std::string, CalculationMethod> calculationMethod;
77 boost::unordered_map<std::string, float> conversionFactorsToSI;
78 boost::unordered_map<std::string, float> conversionFactorsToVis;
79 boost::unordered_map<std::string, std::string> variableAliases;
83 void initializeCalculationMethods();
84 float compute_magnitude(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
85 float compute_temp(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
86 float compute_pram(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
87 float compute_edotj(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
88 float compute_eComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
89 float compute_ey(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
90 float compute_ez(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
92 compute_jparComponent1(
const std::string& variable,
const float& c0,
const float& c1,
94 float compute_jpary(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
95 float compute_jparz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
96 float compute_jpar(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
97 float compute_jxbComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
98 float compute_jxby(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
99 float compute_jxbz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
100 float compute_jxb(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
101 float compute_exbComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
102 float compute_exby(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
103 float compute_exbz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
104 float compute_exb(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
105 float compute_s(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
106 float compute_n(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
107 float compute_nv(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
108 float compute_nvComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
109 float compute_nvy(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
110 float compute_nvz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
111 float compute_p(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
112 float compute_beta(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
113 float compute_en(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
114 float compute_scaleByRadius(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
115 float compute_polb(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
116 float compute_etaj(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
118 compute_etajComponent1(
const std::string& variable,
const float& c0,
const float& c1,
121 compute_etajComponent2(
const std::string& variable,
const float& c0,
const float& c1,
124 compute_etajComponent3(
const std::string& variable,
const float& c0,
const float& c1,
127 compute_gradient(
const std::string& variable,
const float& c0,
const float& c1,
130 float compute_magnitude(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
131 float& d0,
float& d1,
float& d2);
132 float compute_temp(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
133 float& d0,
float& d1,
float& d2);
134 float compute_pram(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
135 float& d0,
float& d1,
float& d2);
136 float compute_edotj(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
137 float& d0,
float& d1,
float& d2);
138 float compute_eComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
139 float& d0,
float& d1,
float& d2);
140 float compute_ey(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
141 float& d1,
float& d2);
142 float compute_ez(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
143 float& d1,
float& d2);
144 float compute_jparComponent1(
const std::string& variable,
const float& c0,
const float& c1,
145 const float& c2,
float& d0,
float& d1,
float& d2);
146 float compute_jpary(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
147 float& d0,
float& d1,
float& d2);
148 float compute_jparz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
149 float& d0,
float& d1,
float& d2);
150 float compute_jpar(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
151 float& d0,
float& d1,
float& d2);
152 float compute_jxbComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
153 float& d0,
float& d1,
float& d2);
154 float compute_jxby(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
155 float& d0,
float& d1,
float& d2);
156 float compute_jxbz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
157 float& d0,
float& d1,
float& d2);
158 float compute_jxb(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
159 float& d0,
float& d1,
float& d2);
160 float compute_exbComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
161 float& d0,
float& d1,
float& d2);
162 float compute_exby(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
163 float& d0,
float& d1,
float& d2);
164 float compute_exbz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
165 float& d0,
float& d1,
float& d2);
166 float compute_exb(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
167 float& d0,
float& d1,
float& d2);
168 float compute_s(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
169 float& d1,
float& d2);
170 float compute_n(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
171 float& d1,
float& d2);
172 float compute_nv(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
173 float& d1,
float& d2);
174 float compute_nvComponent1(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
175 float& d0,
float& d1,
float& d2);
176 float compute_nvy(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
177 float& d0,
float& d1,
float& d2);
178 float compute_nvz(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
179 float& d0,
float& d1,
float& d2);
180 float compute_p(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
181 float& d1,
float& d2);
182 float compute_beta(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
183 float& d0,
float& d1,
float& d2);
184 float compute_en(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
float& d0,
185 float& d1,
float& d2);
186 float interpolateSimple(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2);
187 float interpolateSimple(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
188 float& d0,
float& d1,
float& d2);
189 float interpolateSimple(
const long& variable,
const float& c0,
const float& c1,
const float& c2);
190 float interpolateSimple(
const long& variable,
const float& c0,
const float& c1,
const float& c2,
191 float& d0,
float& d1,
float& d2);
192 float compute_scaleByRadius(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
193 float& d0,
float& d1,
float& d2);
194 float compute_polb(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
195 float& d0,
float& d1,
float& d2);
196 float compute_etaj(
const std::string& variable,
const float& c0,
const float& c1,
const float& c2,
197 float& d0,
float& d1,
float& d2);
198 float compute_etajComponent1(
const std::string& variable,
const float& c0,
const float& c1,
199 const float& c2,
float& d0,
float& d1,
float& d2);
200 float compute_etajComponent2(
const std::string& variable,
const float& c0,
const float& c1,
201 const float& c2,
float& d0,
float& d1,
float& d2);
202 float compute_etajComponent3(
const std::string& variable,
const float& c0,
const float& c1,
203 const float& c2,
float& d0,
float& d1,
float& d2);
204 float compute_gradient(
const std::string& variable,
const float& c0,
const float& c1,
205 const float& c2,
float& d0,
float& d1,
float& d2);
207 std::vector<float>* interpolateSimple(std::vector<std::string>& variables,
const float& c0,
const float& c1,
const float& c2);
208 std::vector<float>* interpolateSimple(std::vector<long>& variables,
const float& c0,
const float& c1,
const float& c2);
209 void initializeConversionFactorsToVis();
210 float getConversionFactorToVis(
const std::string& variable);